home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Multimedia / Resource Library: Multimedia.iso / maestro / source / vcrdub / vcrdub_u.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-15  |  25.0 KB  |  1,025 lines

  1. /*
  2.  * vcrDub_ui.c - User interface object initialization functions.
  3.  * This file was generated by `gxv' from `vcrDub.G'.
  4.  * DO NOT EDIT BY HAND.
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include <sys/param.h>
  9. #include <sys/types.h>
  10. #include <xview/xview.h>
  11. #include <xview/canvas.h>
  12. #include <xview/panel.h>
  13. #include <xview/scrollbar.h>
  14. #include <xview/svrimage.h>
  15. #include <xview/termsw.h>
  16. #include <xview/text.h>
  17. #include <xview/tty.h>
  18. #include <xview/xv_xrect.h>
  19. #include <gcm.h>
  20. #include "vcrDub_ui.h"
  21.  
  22. /*
  23.  * Create object `DocMenu' in the specified instance.
  24.  */
  25. Xv_opaque
  26. vcrDub_DocMenu_create(caddr_t ip, Xv_opaque owner)
  27. {
  28.     extern Menu_item    DubFileOpen(Menu_item, Menu_generate);
  29.     extern Menu_item    DubFileSave(Menu_item, Menu_generate);
  30.     extern Menu_item    ShowInfoPanel(Menu_item, Menu_generate);
  31.     Xv_opaque    obj;
  32.     
  33.     obj = xv_create(XV_NULL, MENU_COMMAND_MENU,
  34.         XV_KEY_DATA, INSTANCE, ip,
  35.         MENU_ITEM,
  36.             XV_KEY_DATA, INSTANCE, ip,
  37.             MENU_STRING, "Open",
  38.             MENU_GEN_PROC, DubFileOpen,
  39.             NULL,
  40.         MENU_ITEM,
  41.             XV_KEY_DATA, INSTANCE, ip,
  42.             MENU_STRING, "Save",
  43.             MENU_GEN_PROC, DubFileSave,
  44.             NULL,
  45.         MENU_ITEM,
  46.             XV_KEY_DATA, INSTANCE, ip,
  47.             MENU_STRING, "About vcrDub...",
  48.             MENU_GEN_PROC, ShowInfoPanel,
  49.             NULL,
  50.         MENU_GEN_PIN_WINDOW, owner, "",
  51.         NULL);
  52.     return obj;
  53. }
  54.  
  55. /*
  56.  * Initialize an instance of object `window1'.
  57.  */
  58. vcrDub_window1_objects *
  59. vcrDub_window1_objects_initialize(vcrDub_window1_objects *ip, Xv_opaque owner)
  60. {
  61.     if (!ip && !(ip = (vcrDub_window1_objects *) calloc(1, sizeof (vcrDub_window1_objects))))
  62.         return (vcrDub_window1_objects *) NULL;
  63.     if (!ip->window1)
  64.         ip->window1 = vcrDub_window1_window1_create(ip, owner);
  65.     if (!ip->dubFileControls)
  66.         ip->dubFileControls = vcrDub_window1_dubFileControls_create(ip, ip->window1);
  67.     if (!ip->dubDocButton)
  68.         ip->dubDocButton = vcrDub_window1_dubDocButton_create(ip, ip->dubFileControls);
  69.     if (!ip->dubStartButton)
  70.         ip->dubStartButton = vcrDub_window1_dubStartButton_create(ip, ip->dubFileControls);
  71.     if (!ip->dubQuitButton)
  72.         ip->dubQuitButton = vcrDub_window1_dubQuitButton_create(ip, ip->dubFileControls);
  73.     if (!ip->dubStatusMsg)
  74.         ip->dubStatusMsg = vcrDub_window1_dubStatusMsg_create(ip, ip->dubFileControls);
  75.     if (!ip->dubEditListControls)
  76.         ip->dubEditListControls = vcrDub_window1_dubEditListControls_create(ip, ip->window1);
  77.     if (!ip->dubAddButton)
  78.         ip->dubAddButton = vcrDub_window1_dubAddButton_create(ip, ip->dubEditListControls);
  79.     if (!ip->dubEditListMsg)
  80.         ip->dubEditListMsg = vcrDub_window1_dubEditListMsg_create(ip, ip->dubEditListControls);
  81.     if (!ip->dubEditNum)
  82.         ip->dubEditNum = vcrDub_window1_dubEditNum_create(ip, ip->dubEditListControls);
  83.     if (!ip->dubEditLabel)
  84.         ip->dubEditLabel = vcrDub_window1_dubEditLabel_create(ip, ip->dubEditListControls);
  85.     if (!ip->dubEditDur)
  86.         ip->dubEditDur = vcrDub_window1_dubEditDur_create(ip, ip->dubEditListControls);
  87.     if (!ip->dubScrollList)
  88.         ip->dubScrollList = vcrDub_window1_dubScrollList_create(ip, ip->dubEditListControls);
  89.     if (!ip->dubEditOpControls)
  90.         ip->dubEditOpControls = vcrDub_window1_dubEditOpControls_create(ip, ip->window1);
  91.     if (!ip->dubOpMsg)
  92.         ip->dubOpMsg = vcrDub_window1_dubOpMsg_create(ip, ip->dubEditOpControls);
  93.     if (!ip->dubAudioStg)
  94.         ip->dubAudioStg = vcrDub_window1_dubAudioStg_create(ip, ip->dubEditOpControls);
  95.     if (!ip->dubMergeButton)
  96.         ip->dubMergeButton = vcrDub_window1_dubMergeButton_create(ip, ip->dubEditOpControls);
  97.     if (!ip->dubDelButton)
  98.         ip->dubDelButton = vcrDub_window1_dubDelButton_create(ip, ip->dubEditOpControls);
  99.     if (!ip->dubMergeLabel)
  100.         ip->dubMergeLabel = vcrDub_window1_dubMergeLabel_create(ip, ip->dubEditOpControls);
  101.     if (!ip->dubEditCanvas)
  102.         ip->dubEditCanvas = vcrDub_window1_dubEditCanvas_create(ip, ip->window1);
  103.     return ip;
  104. }
  105.  
  106. /*
  107.  * Create object `window1' in the specified instance.
  108.  */
  109. Xv_opaque
  110. vcrDub_window1_window1_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  111. {
  112.     Xv_opaque    obj;
  113.     Xv_opaque        window1_image;
  114.     static unsigned short    window1_bits[] = {
  115. #include "vcrDubIcon"
  116.     };
  117.     
  118.     window1_image = xv_create(XV_NULL, SERVER_IMAGE,
  119.         SERVER_IMAGE_DEPTH, 1,
  120.         SERVER_IMAGE_BITS, window1_bits,
  121.         XV_WIDTH, 64,
  122.         XV_HEIGHT, 64,
  123.         NULL);
  124.     obj = xv_create(owner, FRAME,
  125.         XV_KEY_DATA, INSTANCE, ip,
  126.         XV_WIDTH, 809,
  127.         XV_HEIGHT, 471,
  128.         XV_LABEL, "VCR Dub",
  129.         FRAME_SHOW_FOOTER, TRUE,
  130.         FRAME_SHOW_RESIZE_CORNER, TRUE,
  131.         FRAME_ICON, xv_create(XV_NULL, ICON,
  132.             ICON_IMAGE, window1_image,
  133.             NULL),
  134.         NULL);
  135.     gcm_initialize_colors(obj, "BG1", NULL);
  136.     return obj;
  137. }
  138.  
  139. /*
  140.  * Create object `dubFileControls' in the specified instance.
  141.  */
  142. Xv_opaque
  143. vcrDub_window1_dubFileControls_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  144. {
  145.     Xv_opaque    obj;
  146.     
  147.     obj = xv_create(owner, PANEL,
  148.         XV_KEY_DATA, INSTANCE, ip,
  149.         XV_X, 5,
  150.         XV_Y, 6,
  151.         XV_WIDTH, 795,
  152.         XV_HEIGHT, 42,
  153.         WIN_BORDER, TRUE,
  154.         NULL);
  155.     gcm_initialize_colors(obj, "BG1", NULL);
  156.     return obj;
  157. }
  158.  
  159. /*
  160.  * Create object `dubDocButton' in the specified instance.
  161.  */
  162. Xv_opaque
  163. vcrDub_window1_dubDocButton_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  164. {
  165.     Xv_opaque    obj;
  166.     
  167.     obj = xv_create(owner, PANEL_BUTTON,
  168.         XV_KEY_DATA, INSTANCE, ip,
  169.         XV_X, 16,
  170.         XV_Y, 12,
  171.         PANEL_LABEL_STRING, "Document",
  172.         PANEL_ITEM_MENU, vcrDub_DocMenu_create((caddr_t) ip, ip->window1),
  173.         NULL);
  174.     return obj;
  175. }
  176.  
  177. /*
  178.  * Create object `dubStartButton' in the specified instance.
  179.  */
  180. Xv_opaque
  181. vcrDub_window1_dubStartButton_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  182. {
  183.     extern void        DubStart(Panel_item, Event *);
  184.     Xv_opaque    obj;
  185.     
  186.     obj = xv_create(owner, PANEL_BUTTON,
  187.         XV_KEY_DATA, INSTANCE, ip,
  188.         XV_X, 128,
  189.         XV_Y, 12,
  190.         PANEL_LABEL_STRING, "Start Dubbing",
  191.         PANEL_NOTIFY_PROC, DubStart,
  192.         NULL);
  193.     return obj;
  194. }
  195.  
  196. /*
  197.  * Create object `dubQuitButton' in the specified instance.
  198.  */
  199. Xv_opaque
  200. vcrDub_window1_dubQuitButton_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  201. {
  202.     extern void        DubQuit(Panel_item, Event *);
  203.     Xv_opaque    obj;
  204.     
  205.     obj = xv_create(owner, PANEL_BUTTON,
  206.         XV_KEY_DATA, INSTANCE, ip,
  207.         XV_X, 248,
  208.         XV_Y, 12,
  209.         PANEL_LABEL_STRING, "Quit",
  210.         PANEL_NOTIFY_PROC, DubQuit,
  211.         NULL);
  212.     return obj;
  213. }
  214.  
  215. /*
  216.  * Create object `dubStatusMsg' in the specified instance.
  217.  */
  218. Xv_opaque
  219. vcrDub_window1_dubStatusMsg_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  220. {
  221.     Xv_opaque    obj;
  222.     
  223.     obj = xv_create(owner, PANEL_MESSAGE,
  224.         XV_KEY_DATA, INSTANCE, ip,
  225.         XV_X, 336,
  226.         XV_Y, 16,
  227.         PANEL_LABEL_STRING, "Message",
  228.         PANEL_LABEL_BOLD, TRUE,
  229.         NULL);
  230.     return obj;
  231. }
  232.  
  233. /*
  234.  * Create object `dubEditListControls' in the specified instance.
  235.  */
  236. Xv_opaque
  237. vcrDub_window1_dubEditListControls_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  238. {
  239.     Xv_opaque    obj;
  240.     
  241.     obj = xv_create(owner, PANEL,
  242.         XV_KEY_DATA, INSTANCE, ip,
  243.         XV_X, 5,
  244.         XV_Y, 55,
  245.         XV_WIDTH, 419,
  246.         XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  247.         WIN_BORDER, TRUE,
  248.         NULL);
  249.     gcm_initialize_colors(obj, "BG1", NULL);
  250.     return obj;
  251. }
  252.  
  253. /*
  254.  * Create object `dubAddButton' in the specified instance.
  255.  */
  256. Xv_opaque
  257. vcrDub_window1_dubAddButton_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  258. {
  259.     extern void        EditAdd(Panel_item, Event *);
  260.     Xv_opaque    obj;
  261.     
  262.     obj = xv_create(owner, PANEL_BUTTON,
  263.         XV_KEY_DATA, INSTANCE, ip,
  264.         XV_X, 300,
  265.         XV_Y, 16,
  266.         PANEL_LABEL_STRING, "Add edit ->",
  267.         PANEL_NOTIFY_PROC, EditAdd,
  268.         NULL);
  269.     return obj;
  270. }
  271.  
  272. /*
  273.  * Create object `dubEditListMsg' in the specified instance.
  274.  */
  275. Xv_opaque
  276. vcrDub_window1_dubEditListMsg_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  277. {
  278.     Xv_opaque    obj;
  279.     
  280.     obj = xv_create(owner, PANEL_MESSAGE,
  281.         XV_KEY_DATA, INSTANCE, ip,
  282.         XV_X, 144,
  283.         XV_Y, 48,
  284.         PANEL_LABEL_STRING, "Source Edit List",
  285.         PANEL_LABEL_BOLD, TRUE,
  286.         NULL);
  287.     return obj;
  288. }
  289.  
  290. /*
  291.  * Create object `dubEditNum' in the specified instance.
  292.  */
  293. Xv_opaque
  294. vcrDub_window1_dubEditNum_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  295. {
  296.     Xv_opaque    obj;
  297.     
  298.     obj = xv_create(owner, PANEL_MESSAGE,
  299.         XV_KEY_DATA, INSTANCE, ip,
  300.         XV_X, 28,
  301.         XV_Y, 80,
  302.         PANEL_LABEL_STRING, "Edit #",
  303.         PANEL_LABEL_BOLD, TRUE,
  304.         NULL);
  305.     return obj;
  306. }
  307.  
  308. /*
  309.  * Create object `dubEditLabel' in the specified instance.
  310.  */
  311. Xv_opaque
  312. vcrDub_window1_dubEditLabel_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  313. {
  314.     Xv_opaque    obj;
  315.     
  316.     obj = xv_create(owner, PANEL_MESSAGE,
  317.         XV_KEY_DATA, INSTANCE, ip,
  318.         XV_X, 140,
  319.         XV_Y, 80,
  320.         PANEL_LABEL_STRING, "Label",
  321.         PANEL_LABEL_BOLD, TRUE,
  322.         NULL);
  323.     return obj;
  324. }
  325.  
  326. /*
  327.  * Create object `dubEditDur' in the specified instance.
  328.  */
  329. Xv_opaque
  330. vcrDub_window1_dubEditDur_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  331. {
  332.     Xv_opaque    obj;
  333.     
  334.     obj = xv_create(owner, PANEL_MESSAGE,
  335.         XV_KEY_DATA, INSTANCE, ip,
  336.         XV_X, 280,
  337.         XV_Y, 80,
  338.         PANEL_LABEL_STRING, "Duration",
  339.         PANEL_LABEL_BOLD, TRUE,
  340.         NULL);
  341.     return obj;
  342. }
  343.  
  344. /*
  345.  * Create object `dubScrollList' in the specified instance.
  346.  */
  347. Xv_opaque
  348. vcrDub_window1_dubScrollList_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  349. {
  350.     extern int        DubSelect(Panel_item, char *, Xv_opaque, Panel_list_op, Event *, int);
  351.     Xv_opaque    obj;
  352.     
  353.     obj = xv_create(owner, PANEL_LIST,
  354.         XV_KEY_DATA, INSTANCE, ip,
  355.         XV_X, 12,
  356.         XV_Y, 100,
  357.         PANEL_LIST_WIDTH, 380,
  358.         PANEL_LIST_DISPLAY_ROWS, 15,
  359.         PANEL_LAYOUT, PANEL_VERTICAL,
  360.         PANEL_READ_ONLY, FALSE,
  361.         PANEL_CHOOSE_ONE, TRUE,
  362.         PANEL_CHOOSE_NONE, TRUE,
  363.         PANEL_NOTIFY_PROC, DubSelect,
  364.         NULL);
  365.     return obj;
  366. }
  367.  
  368. /*
  369.  * Create object `dubEditOpControls' in the specified instance.
  370.  */
  371. Xv_opaque
  372. vcrDub_window1_dubEditOpControls_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  373. {
  374.     Xv_opaque    obj;
  375.     
  376.     obj = xv_create(owner, PANEL,
  377.         XV_KEY_DATA, INSTANCE, ip,
  378.         XV_X, 435,
  379.         XV_Y, 55,
  380.         XV_WIDTH, 365,
  381.         XV_HEIGHT, 105,
  382.         WIN_BORDER, TRUE,
  383.         NULL);
  384.     gcm_initialize_colors(obj, "BG1", NULL);
  385.     return obj;
  386. }
  387.  
  388. /*
  389.  * Create object `dubOpMsg' in the specified instance.
  390.  */
  391. Xv_opaque
  392. vcrDub_window1_dubOpMsg_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  393. {
  394.     Xv_opaque    obj;
  395.     
  396.     obj = xv_create(owner, PANEL_MESSAGE,
  397.         XV_KEY_DATA, INSTANCE, ip,
  398.         XV_X, 100,
  399.         XV_Y, 12,
  400.         PANEL_LABEL_STRING, "Current Edit Operations",
  401.         PANEL_LABEL_BOLD, TRUE,
  402.         NULL);
  403.     return obj;
  404. }
  405.  
  406. /*
  407.  * Create object `dubAudioStg' in the specified instance.
  408.  */
  409. Xv_opaque
  410. vcrDub_window1_dubAudioStg_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  411. {
  412.     extern void        SetAudioDub(Panel_item, int, Event *);
  413.     Xv_opaque    obj;
  414.     
  415.     obj = xv_create(owner, PANEL_CHOICE,
  416.         XV_KEY_DATA, INSTANCE, ip,
  417.         XV_X, 184,
  418.         XV_Y, 40,
  419.         PANEL_CHOICE_NROWS, 1,
  420.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  421.         PANEL_CHOOSE_NONE, FALSE,
  422.         PANEL_LABEL_STRING, "Audio Dub:",
  423.         PANEL_NOTIFY_PROC, SetAudioDub,
  424.         PANEL_CHOICE_STRINGS,
  425.             "Off",
  426.             "On",
  427.             NULL,
  428.         NULL);
  429.     return obj;
  430. }
  431.  
  432. /*
  433.  * Create object `dubMergeButton' in the specified instance.
  434.  */
  435. Xv_opaque
  436. vcrDub_window1_dubMergeButton_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  437. {
  438.     extern void        EditMerge(Panel_item, Event *);
  439.     Xv_opaque    obj;
  440.     
  441.     obj = xv_create(owner, PANEL_BUTTON,
  442.         XV_KEY_DATA, INSTANCE, ip,
  443.         XV_X, 16,
  444.         XV_Y, 44,
  445.         PANEL_LABEL_STRING, "Merge",
  446.         PANEL_NOTIFY_PROC, EditMerge,
  447.         NULL);
  448.     return obj;
  449. }
  450.  
  451. /*
  452.  * Create object `dubDelButton' in the specified instance.
  453.  */
  454. Xv_opaque
  455. vcrDub_window1_dubDelButton_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  456. {
  457.     extern void        DubDelete(Panel_item, Event *);
  458.     Xv_opaque    obj;
  459.     
  460.     obj = xv_create(owner, PANEL_BUTTON,
  461.         XV_KEY_DATA, INSTANCE, ip,
  462.         XV_X, 96,
  463.         XV_Y, 44,
  464.         PANEL_LABEL_STRING, "Delete",
  465.         PANEL_NOTIFY_PROC, DubDelete,
  466.         NULL);
  467.     return obj;
  468. }
  469.  
  470. /*
  471.  * Create object `dubMergeLabel' in the specified instance.
  472.  */
  473. Xv_opaque
  474. vcrDub_window1_dubMergeLabel_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  475. {
  476.     Xv_opaque    obj;
  477.     
  478.     obj = xv_create(owner, PANEL_TEXT,
  479.         XV_KEY_DATA, INSTANCE, ip,
  480.         XV_X, 16,
  481.         XV_Y, 76,
  482.         PANEL_VALUE_DISPLAY_LENGTH, 23,
  483.         PANEL_VALUE_STORED_LENGTH, 23,
  484.         PANEL_LABEL_STRING, "New Label:",
  485.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  486.         PANEL_READ_ONLY, FALSE,
  487.         NULL);
  488.     return obj;
  489. }
  490.  
  491. /*
  492.  * Create object `dubEditCanvas' in the specified instance.
  493.  */
  494. Xv_opaque
  495. vcrDub_window1_dubEditCanvas_create(vcrDub_window1_objects *ip, Xv_opaque owner)
  496. {
  497.     extern Notify_value    EditEventHandler(Xv_window, Event *, Notify_arg, Notify_event_type);
  498.     extern void    EditRepaintHandler(Canvas, Xv_window, Display *, Window, Xv_xrectlist *);
  499.     Xv_opaque    obj;
  500.     
  501.     obj = xv_create(owner, CANVAS,
  502.         XV_KEY_DATA, INSTANCE, ip,
  503.         XV_X, 435,
  504.         XV_Y, 169,
  505.         XV_WIDTH, 365,
  506.         XV_HEIGHT, 299,
  507.         CANVAS_REPAINT_PROC, EditRepaintHandler,
  508.         CANVAS_X_PAINT_WINDOW, TRUE,
  509.         NULL);
  510.     xv_create(obj, SCROLLBAR, SCROLLBAR_DIRECTION, SCROLLBAR_VERTICAL, NULL);
  511.     gcm_initialize_colors(obj, "BG1", "Black");
  512.     xv_set(canvas_paint_window(obj), WIN_CONSUME_EVENTS,
  513.         WIN_MOUSE_BUTTONS,
  514.         LOC_MOVE,
  515.         LOC_DRAG,
  516.         LOC_WINENTER,
  517.         LOC_WINEXIT,
  518.         WIN_ASCII_EVENTS,
  519.         WIN_LEFT_KEYS,
  520.         WIN_RIGHT_KEYS,
  521.         WIN_TOP_KEYS,
  522.         NULL, NULL);
  523.     notify_interpose_event_func(canvas_paint_window(obj),
  524.         (Notify_func) EditEventHandler, NOTIFY_SAFE);
  525.     /*
  526.      * This line is here for backwards compatibility. It will be
  527.      * removed for the next release.
  528.      */
  529.     xv_set(canvas_paint_window(obj), XV_KEY_DATA, INSTANCE, ip, NULL);
  530.     return obj;
  531. }
  532.  
  533. /*
  534.  * Initialize an instance of object `dubSetupWindow'.
  535.  */
  536. vcrDub_dubSetupWindow_objects *
  537. vcrDub_dubSetupWindow_objects_initialize(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  538. {
  539.     if (!ip && !(ip = (vcrDub_dubSetupWindow_objects *) calloc(1, sizeof (vcrDub_dubSetupWindow_objects))))
  540.         return (vcrDub_dubSetupWindow_objects *) NULL;
  541.     if (!ip->dubSetupWindow)
  542.         ip->dubSetupWindow = vcrDub_dubSetupWindow_dubSetupWindow_create(ip, owner);
  543.     if (!ip->dubVideoSetupControls)
  544.         ip->dubVideoSetupControls = vcrDub_dubSetupWindow_dubVideoSetupControls_create(ip, ip->dubSetupWindow);
  545.     if (!ip->playDeckDeviceStg)
  546.         ip->playDeckDeviceStg = vcrDub_dubSetupWindow_playDeckDeviceStg_create(ip, ip->dubVideoSetupControls);
  547.     if (!ip->recDeckDeviceStg)
  548.         ip->recDeckDeviceStg = vcrDub_dubSetupWindow_recDeckDeviceStg_create(ip, ip->dubVideoSetupControls);
  549.     if (!ip->playDeckStg)
  550.         ip->playDeckStg = vcrDub_dubSetupWindow_playDeckStg_create(ip, ip->dubVideoSetupControls);
  551.     if (!ip->recDeckStg)
  552.         ip->recDeckStg = vcrDub_dubSetupWindow_recDeckStg_create(ip, ip->dubVideoSetupControls);
  553.     if (!ip->startAddTxt)
  554.         ip->startAddTxt = vcrDub_dubSetupWindow_startAddTxt_create(ip, ip->dubVideoSetupControls);
  555.     if (!ip->intervalTxt)
  556.         ip->intervalTxt = vcrDub_dubSetupWindow_intervalTxt_create(ip, ip->dubVideoSetupControls);
  557.     if (!ip->intervalMsg)
  558.         ip->intervalMsg = vcrDub_dubSetupWindow_intervalMsg_create(ip, ip->dubVideoSetupControls);
  559.     if (!ip->dubSerialDoneButton)
  560.         ip->dubSerialDoneButton = vcrDub_dubSetupWindow_dubSerialDoneButton_create(ip, ip->dubVideoSetupControls);
  561.     return ip;
  562. }
  563.  
  564. /*
  565.  * Create object `dubSetupWindow' in the specified instance.
  566.  */
  567. Xv_opaque
  568. vcrDub_dubSetupWindow_dubSetupWindow_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  569. {
  570.     Xv_opaque    obj;
  571.     
  572.     obj = xv_create(owner, FRAME_CMD,
  573.         XV_KEY_DATA, INSTANCE, ip,
  574.         XV_WIDTH, 357,
  575.         XV_HEIGHT, 260,
  576.         XV_LABEL, "Video Setup",
  577.         XV_SHOW, FALSE,
  578.         FRAME_SHOW_FOOTER, TRUE,
  579.         FRAME_SHOW_RESIZE_CORNER, TRUE,
  580.         FRAME_CMD_PUSHPIN_IN, FALSE,
  581.         NULL);
  582.     xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  583.     return obj;
  584. }
  585.  
  586. /*
  587.  * Create object `dubVideoSetupControls' in the specified instance.
  588.  */
  589. Xv_opaque
  590. vcrDub_dubSetupWindow_dubVideoSetupControls_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  591. {
  592.     Xv_opaque    obj;
  593.     
  594.     obj = xv_create(owner, PANEL,
  595.         XV_KEY_DATA, INSTANCE, ip,
  596.         XV_X, 0,
  597.         XV_Y, 0,
  598.         XV_WIDTH, WIN_EXTEND_TO_EDGE,
  599.         XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  600.         WIN_BORDER, FALSE,
  601.         NULL);
  602.     gcm_initialize_colors(obj, "BG1", NULL);
  603.     return obj;
  604. }
  605.  
  606. /*
  607.  * Create object `playDeckDeviceStg' in the specified instance.
  608.  */
  609. Xv_opaque
  610. vcrDub_dubSetupWindow_playDeckDeviceStg_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  611. {
  612.     extern void        SetPlayDevice(Panel_item, int, Event *);
  613.     Xv_opaque    obj;
  614.     
  615.     obj = xv_create(owner, PANEL_CHOICE, PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
  616.         XV_KEY_DATA, INSTANCE, ip,
  617.         XV_X, 24,
  618.         XV_Y, 20,
  619.         PANEL_CHOICE_NROWS, 1,
  620.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  621.         PANEL_LABEL_STRING, "Play Deck:    ",
  622.         PANEL_NOTIFY_PROC, SetPlayDevice,
  623.         PANEL_CHOICE_STRING, 0, "Choice",
  624.         NULL);
  625.     return obj;
  626. }
  627.  
  628. /*
  629.  * Create object `recDeckDeviceStg' in the specified instance.
  630.  */
  631. Xv_opaque
  632. vcrDub_dubSetupWindow_recDeckDeviceStg_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  633. {
  634.     extern void        SetRecDevice(Panel_item, int, Event *);
  635.     Xv_opaque    obj;
  636.     
  637.     obj = xv_create(owner, PANEL_CHOICE, PANEL_DISPLAY_LEVEL, PANEL_CURRENT,
  638.         XV_KEY_DATA, INSTANCE, ip,
  639.         XV_X, 24,
  640.         XV_Y, 48,
  641.         PANEL_CHOICE_NROWS, 1,
  642.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  643.         PANEL_LABEL_STRING, "Record Deck:",
  644.         PANEL_NOTIFY_PROC, SetRecDevice,
  645.         PANEL_CHOICE_STRING, 0, "Choice",
  646.         NULL);
  647.     return obj;
  648. }
  649.  
  650. /*
  651.  * Create object `playDeckStg' in the specified instance.
  652.  */
  653. Xv_opaque
  654. vcrDub_dubSetupWindow_playDeckStg_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  655. {
  656.     extern void        SetPlayDeck(Panel_item, int, Event *);
  657.     Xv_opaque    obj;
  658.     
  659.     obj = xv_create(owner, PANEL_CHOICE,
  660.         XV_KEY_DATA, INSTANCE, ip,
  661.         XV_X, 24,
  662.         XV_Y, 84,
  663.         PANEL_CHOICE_NROWS, 1,
  664.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  665.         PANEL_CHOOSE_NONE, FALSE,
  666.         PANEL_LABEL_STRING, "Choose serial port for Play Deck:",
  667.         PANEL_NOTIFY_PROC, SetPlayDeck,
  668.         PANEL_CHOICE_STRINGS,
  669.             "A",
  670.             "B",
  671.             NULL,
  672.         NULL);
  673.     return obj;
  674. }
  675.  
  676. /*
  677.  * Create object `recDeckStg' in the specified instance.
  678.  */
  679. Xv_opaque
  680. vcrDub_dubSetupWindow_recDeckStg_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  681. {
  682.     extern void        SetRecDeck(Panel_item, int, Event *);
  683.     Xv_opaque    obj;
  684.     
  685.     obj = xv_create(owner, PANEL_CHOICE,
  686.         XV_KEY_DATA, INSTANCE, ip,
  687.         XV_X, 160,
  688.         XV_Y, 116,
  689.         PANEL_CHOICE_NROWS, 1,
  690.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  691.         PANEL_CHOOSE_NONE, FALSE,
  692.         PANEL_LABEL_STRING, "Record Deck:",
  693.         PANEL_NOTIFY_PROC, SetRecDeck,
  694.         PANEL_CHOICE_STRINGS,
  695.             "A",
  696.             "B",
  697.             NULL,
  698.         NULL);
  699.     return obj;
  700. }
  701.  
  702. /*
  703.  * Create object `startAddTxt' in the specified instance.
  704.  */
  705. Xv_opaque
  706. vcrDub_dubSetupWindow_startAddTxt_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  707. {
  708.     Xv_opaque    obj;
  709.     
  710.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  711.         XV_KEY_DATA, INSTANCE, ip,
  712.         XV_X, 24,
  713.         XV_Y, 160,
  714.         PANEL_VALUE_DISPLAY_LENGTH, 8,
  715.         PANEL_VALUE_STORED_LENGTH, 80,
  716.         PANEL_LABEL_STRING, "Start recording at address:",
  717.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  718.         PANEL_MAX_VALUE, 28800,
  719.         PANEL_MIN_VALUE, 3,
  720.         PANEL_VALUE, 0,
  721.         PANEL_READ_ONLY, FALSE,
  722.         NULL);
  723.     return obj;
  724. }
  725.  
  726. /*
  727.  * Create object `intervalTxt' in the specified instance.
  728.  */
  729. Xv_opaque
  730. vcrDub_dubSetupWindow_intervalTxt_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  731. {
  732.     Xv_opaque    obj;
  733.     
  734.     obj = xv_create(owner, PANEL_NUMERIC_TEXT,
  735.         XV_KEY_DATA, INSTANCE, ip,
  736.         XV_X, 24,
  737.         XV_Y, 192,
  738.         PANEL_VALUE_DISPLAY_LENGTH, 3,
  739.         PANEL_VALUE_STORED_LENGTH, 4,
  740.         PANEL_LABEL_STRING, "Interval between edits:",
  741.         PANEL_LAYOUT, PANEL_HORIZONTAL,
  742.         PANEL_MAX_VALUE, 300,
  743.         PANEL_MIN_VALUE, 3,
  744.         PANEL_VALUE, 0,
  745.         PANEL_READ_ONLY, FALSE,
  746.         NULL);
  747.     return obj;
  748. }
  749.  
  750. /*
  751.  * Create object `intervalMsg' in the specified instance.
  752.  */
  753. Xv_opaque
  754. vcrDub_dubSetupWindow_intervalMsg_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  755. {
  756.     Xv_opaque    obj;
  757.     
  758.     obj = xv_create(owner, PANEL_MESSAGE,
  759.         XV_KEY_DATA, INSTANCE, ip,
  760.         XV_X, 268,
  761.         XV_Y, 192,
  762.         PANEL_LABEL_STRING, "seconds",
  763.         PANEL_LABEL_BOLD, FALSE,
  764.         NULL);
  765.     return obj;
  766. }
  767.  
  768. /*
  769.  * Create object `dubSerialDoneButton' in the specified instance.
  770.  */
  771. Xv_opaque
  772. vcrDub_dubSetupWindow_dubSerialDoneButton_create(vcrDub_dubSetupWindow_objects *ip, Xv_opaque owner)
  773. {
  774.     extern void        SerialDone(Panel_item, Event *);
  775.     Xv_opaque    obj;
  776.     
  777.     obj = xv_create(owner, PANEL_BUTTON,
  778.         XV_KEY_DATA, INSTANCE, ip,
  779.         XV_X, 136,
  780.         XV_Y, 224,
  781.         PANEL_LABEL_STRING, "Continue",
  782.         PANEL_NOTIFY_PROC, SerialDone,
  783.         NULL);
  784.     return obj;
  785. }
  786.  
  787. /*
  788.  * Initialize an instance of object `infoPopup'.
  789.  */
  790. vcrDub_infoPopup_objects *
  791. vcrDub_infoPopup_objects_initialize(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  792. {
  793.     if (!ip && !(ip = (vcrDub_infoPopup_objects *) calloc(1, sizeof (vcrDub_infoPopup_objects))))
  794.         return (vcrDub_infoPopup_objects *) NULL;
  795.     if (!ip->infoPopup)
  796.         ip->infoPopup = vcrDub_infoPopup_infoPopup_create(ip, owner);
  797.     if (!ip->controls1)
  798.         ip->controls1 = vcrDub_infoPopup_controls1_create(ip, ip->infoPopup);
  799.     if (!ip->appNameMsg)
  800.         ip->appNameMsg = vcrDub_infoPopup_appNameMsg_create(ip, ip->controls1);
  801.     if (!ip->descriptionMsg)
  802.         ip->descriptionMsg = vcrDub_infoPopup_descriptionMsg_create(ip, ip->controls1);
  803.     if (!ip->maestroMsg)
  804.         ip->maestroMsg = vcrDub_infoPopup_maestroMsg_create(ip, ip->controls1);
  805.     if (!ip->authorMsg)
  806.         ip->authorMsg = vcrDub_infoPopup_authorMsg_create(ip, ip->controls1);
  807.     if (!ip->copyrightMsg)
  808.         ip->copyrightMsg = vcrDub_infoPopup_copyrightMsg_create(ip, ip->controls1);
  809.     if (!ip->stanfordUMsg)
  810.         ip->stanfordUMsg = vcrDub_infoPopup_stanfordUMsg_create(ip, ip->controls1);
  811.     if (!ip->stanfordCAMsg)
  812.         ip->stanfordCAMsg = vcrDub_infoPopup_stanfordCAMsg_create(ip, ip->controls1);
  813.     if (!ip->forMoreInfoMsg)
  814.         ip->forMoreInfoMsg = vcrDub_infoPopup_forMoreInfoMsg_create(ip, ip->controls1);
  815.     if (!ip->removeInfoWindowButton)
  816.         ip->removeInfoWindowButton = vcrDub_infoPopup_removeInfoWindowButton_create(ip, ip->controls1);
  817.     return ip;
  818. }
  819.  
  820. /*
  821.  * Create object `infoPopup' in the specified instance.
  822.  */
  823. Xv_opaque
  824. vcrDub_infoPopup_infoPopup_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  825. {
  826.     Xv_opaque    obj;
  827.     
  828.     obj = xv_create(owner, FRAME_CMD,
  829.         XV_KEY_DATA, INSTANCE, ip,
  830.         XV_WIDTH, 449,
  831.         XV_HEIGHT, 283,
  832.         XV_LABEL, "About vcrDub",
  833.         XV_SHOW, FALSE,
  834.         FRAME_SHOW_FOOTER, FALSE,
  835.         FRAME_SHOW_RESIZE_CORNER, FALSE,
  836.         FRAME_CMD_PUSHPIN_IN, TRUE,
  837.         NULL);
  838.     xv_set(xv_get(obj, FRAME_CMD_PANEL), WIN_SHOW, FALSE, NULL);
  839.     return obj;
  840. }
  841.  
  842. /*
  843.  * Create object `controls1' in the specified instance.
  844.  */
  845. Xv_opaque
  846. vcrDub_infoPopup_controls1_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  847. {
  848.     Xv_opaque    obj;
  849.     
  850.     obj = xv_create(owner, PANEL,
  851.         XV_KEY_DATA, INSTANCE, ip,
  852.         XV_X, 0,
  853.         XV_Y, 0,
  854.         XV_WIDTH, WIN_EXTEND_TO_EDGE,
  855.         XV_HEIGHT, WIN_EXTEND_TO_EDGE,
  856.         WIN_BORDER, FALSE,
  857.         NULL);
  858.     gcm_initialize_colors(obj, "BG1", NULL);
  859.     return obj;
  860. }
  861.  
  862. /*
  863.  * Create object `appNameMsg' in the specified instance.
  864.  */
  865. Xv_opaque
  866. vcrDub_infoPopup_appNameMsg_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  867. {
  868.     Xv_opaque    obj;
  869.     
  870.     obj = xv_create(owner, PANEL_MESSAGE,
  871.         XV_KEY_DATA, INSTANCE, ip,
  872.         XV_X, 153,
  873.         XV_Y, 16,
  874.         PANEL_LABEL_STRING, "vcrDub  Version 1.12",
  875.         PANEL_LABEL_BOLD, TRUE,
  876.         NULL);
  877.     return obj;
  878. }
  879.  
  880. /*
  881.  * Create object `descriptionMsg' in the specified instance.
  882.  */
  883. Xv_opaque
  884. vcrDub_infoPopup_descriptionMsg_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  885. {
  886.     Xv_opaque    obj;
  887.     
  888.     obj = xv_create(owner, PANEL_MESSAGE,
  889.         XV_KEY_DATA, INSTANCE, ip,
  890.         XV_X, 106,
  891.         XV_Y, 40,
  892.         PANEL_LABEL_STRING, "An application for dubbing videotapes",
  893.         PANEL_LABEL_BOLD, FALSE,
  894.         NULL);
  895.     return obj;
  896. }
  897.  
  898. /*
  899.  * Create object `maestroMsg' in the specified instance.
  900.  */
  901. Xv_opaque
  902. vcrDub_infoPopup_maestroMsg_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  903. {
  904.     Xv_opaque    obj;
  905.     
  906.     obj = xv_create(owner, PANEL_MESSAGE,
  907.         XV_KEY_DATA, INSTANCE, ip,
  908.         XV_X, 8,
  909.         XV_Y, 64,
  910.         PANEL_LABEL_STRING, "designed for use with the MAEstro Multimedia Authoring Environment",
  911.         PANEL_LABEL_BOLD, FALSE,
  912.         NULL);
  913.     return obj;
  914. }
  915.  
  916. /*
  917.  * Create object `authorMsg' in the specified instance.
  918.  */
  919. Xv_opaque
  920. vcrDub_infoPopup_authorMsg_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  921. {
  922.     Xv_opaque    obj;
  923.     
  924.     obj = xv_create(owner, PANEL_MESSAGE,
  925.         XV_KEY_DATA, INSTANCE, ip,
  926.         XV_X, 168,
  927.         XV_Y, 96,
  928.         PANEL_LABEL_STRING, "by Wee-Lee Lim",
  929.         PANEL_LABEL_BOLD, TRUE,
  930.         NULL);
  931.     return obj;
  932. }
  933.  
  934. /*
  935.  * Create object `copyrightMsg' in the specified instance.
  936.  */
  937. Xv_opaque
  938. vcrDub_infoPopup_copyrightMsg_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  939. {
  940.     Xv_opaque    obj;
  941.     
  942.     obj = xv_create(owner, PANEL_MESSAGE,
  943.         XV_KEY_DATA, INSTANCE, ip,
  944.         XV_X, 16,
  945.         XV_Y, 120,
  946.         PANEL_LABEL_STRING, "Copyright (C) 1991, 1992 Libraries & Information Resources (L&IR)",
  947.         PANEL_LABEL_BOLD, FALSE,
  948.         NULL);
  949.     return obj;
  950. }
  951.  
  952. /*
  953.  * Create object `stanfordUMsg' in the specified instance.
  954.  */
  955. Xv_opaque
  956. vcrDub_infoPopup_stanfordUMsg_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  957. {
  958.     Xv_opaque    obj;
  959.     
  960.     obj = xv_create(owner, PANEL_MESSAGE,
  961.         XV_KEY_DATA, INSTANCE, ip,
  962.         XV_X, 162,
  963.         XV_Y, 144,
  964.         PANEL_LABEL_STRING, "Stanford University",
  965.         PANEL_LABEL_BOLD, FALSE,
  966.         NULL);
  967.     return obj;
  968. }
  969.  
  970. /*
  971.  * Create object `stanfordCAMsg' in the specified instance.
  972.  */
  973. Xv_opaque
  974. vcrDub_infoPopup_stanfordCAMsg_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  975. {
  976.     Xv_opaque    obj;
  977.     
  978.     obj = xv_create(owner, PANEL_MESSAGE,
  979.         XV_KEY_DATA, INSTANCE, ip,
  980.         XV_X, 120,
  981.         XV_Y, 168,
  982.         PANEL_LABEL_STRING, "Stanford, California 94305-3090",
  983.         PANEL_LABEL_BOLD, FALSE,
  984.         NULL);
  985.     return obj;
  986. }
  987.  
  988. /*
  989.  * Create object `forMoreInfoMsg' in the specified instance.
  990.  */
  991. Xv_opaque
  992. vcrDub_infoPopup_forMoreInfoMsg_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  993. {
  994.     Xv_opaque    obj;
  995.     
  996.     obj = xv_create(owner, PANEL_MESSAGE,
  997.         XV_KEY_DATA, INSTANCE, ip,
  998.         XV_X, 72,
  999.         XV_Y, 208,
  1000.         PANEL_LABEL_STRING, "For more info, contact maestro@sioux.stanford.edu",
  1001.         PANEL_LABEL_BOLD, FALSE,
  1002.         NULL);
  1003.     return obj;
  1004. }
  1005.  
  1006. /*
  1007.  * Create object `removeInfoWindowButton' in the specified instance.
  1008.  */
  1009. Xv_opaque
  1010. vcrDub_infoPopup_removeInfoWindowButton_create(vcrDub_infoPopup_objects *ip, Xv_opaque owner)
  1011. {
  1012.     extern void        RemoveInfoWindow(Panel_item, Event *);
  1013.     Xv_opaque    obj;
  1014.     
  1015.     obj = xv_create(owner, PANEL_BUTTON,
  1016.         XV_KEY_DATA, INSTANCE, ip,
  1017.         XV_X, 208,
  1018.         XV_Y, 256,
  1019.         PANEL_LABEL_STRING, "OK",
  1020.         PANEL_NOTIFY_PROC, RemoveInfoWindow,
  1021.         NULL);
  1022.     return obj;
  1023. }
  1024.  
  1025.